package co.yixiang.handler;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * API错误信息类，用于封装错误响应信息
 */
@Data
class ApiError {

    // 默认状态码为400，表示Bad Request
    private Integer status = 400;

    // 错误发生的时间，格式为yyyy-MM-dd HH:mm:ss
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime timestamp;

    // 错误信息的描述
    private String message;

    // 私有构造方法，确保只能通过静态方法创建实例
    private ApiError() {
        timestamp = LocalDateTime.now();
    }

    /**
     * 创建一个ApiError实例并设置错误信息
     * @param message 错误信息的描述
     * @return ApiError实例
     */
    public static ApiError error(String message){
        ApiError apiError = new ApiError();
        apiError.setMessage(message);
        return apiError;
    }

    /**
     * 创建一个ApiError实例并设置状态码和错误信息
     * @param status HTTP状态码
     * @param message 错误信息的描述
     * @return ApiError实例
     */
    public static ApiError error(Integer status, String message){
        ApiError apiError = new ApiError();
        apiError.setStatus(status);
        apiError.setMessage(message);
        return apiError;
    }
}
